Isodos = {
	submitting: false,
};

Isodos.focus = function() {
	var x = $('input[name="login"]');
	var v = x.val();
	if (v) {
		x = $('input[name="kodikos"]');
		v = x.val();
	}

	x.focus().val(v);
	return v;
}

Isodos.oku = {
	setup: function() {
		$('input[name="login"]').on('keypress keyup', function(e) {
			if (Client.controlKey(e)) return;
			Isodos.oku.login(this);
		});
		$('input[name="kodikos"]').on('keypress keyup', function(e) {
			if (Client.controlKey(e)) return;
			Isodos.oku.kodikos(this);
		});
	},

	login: function(fld) {
		$(fld).formaLathos(fld.value && (!fld.value.validLogin()));
	},

	kodikos: function(fld) {
		$(fld).formaLathos();
	},
}

Isodos.valid = {
	login: function(fld) {
		fld.value = fld.value.trim();
		if (fld.value === '') {
			Client.fyi.epano('Το login name είναι υποχρεωτικό');
			$(fld).formaLathos(true);
			return false;
		}

		if (!fld.value.validLogin()) {
			Client.fyi.epano('Το login name δεν είναι δεκτό');
			$(fld).formaLathos(true);
			return false;
		}

		$(fld).formaLathos();
		return true;
	},
};

Isodos.akiro = function() {
	window.location = Client.server;
}

Isodos.isodos = function(form) {
	// Αν είμαστε στη φάση όπου έχουν δημιουργηθεί τα cookies
	// και η συνεδρία, προχωρούμε στο φευδοsubmit. Αυτό το
	// κάνουμε μόνο για να μας δοθεί από τον browser επιλογή
	// αποθήκευσης των στοιχείων εισόδου.
	if (Isodos.submitting === 'pass') return true;

	Client.fyi.pano('Ελέγχονται τα στοιχεία εισόδου. Παρακαλώ περιμένετε…');
	if (!Isodos.valid.login(form.login)) return Isodos.lathosPedio(form.login);

	if (Isodos.submitting) return false;
	Isodos.submitAllow(false);

	Client.ajax('isodos/checkin', 'login=' + form.login.value.uri(),
		'kodikos=' + form.kodikos.value.uri(), function(rsp) {
		try {
			// Κατά την επιτυχημένη είσοδο δημιουργείται νέα συνεδρία και
			// επιστρέφεται το κλειδί ως "{klidi: 'XXXXXXXXXX'}"
			eval('var klidi = ' + rsp + '.klidi;');
		} catch(e) {
			Client.fyi.spano(rsp);
			$('input[name="kodikos"]').formaLathos(true);
			Isodos.submitAllow();
			Isodos.focus();
			return;
		}

		// Έχει δημιουργηθεί νέα συνεδρία, έχουν τεθεί τα σχετικά session
		// data και προχωρούμε στην ενημέρωση του Node server.

		Client.isodos(form.login.value, klidi, function() {
			// Η ένταξη της νέας συνεδρίας στο σκηνικό του server έγινε
			// επιτυχώς και είναι ώρα για επώνυμη χρήση της σελίδας.
			// Εδώ μπορούμε απλώς να αλλάξουμε το location του τρέχοντος
			// window, αλλά προτιμούμε να κάνουμε εκ νέου submit χωρίς
			// τους ελέγχους ώστε να λειτουργήσουν οι διαδικασίες της
			// αποθήκευσης δεδομένων φόρμας του browser.
			Isodos.submitting = 'pass';
			$(form).submit();
		}, function() {
			// Το δεύτερο βήμα εισόδου (ενημέρωση σκηνικού) έχει αποτύχει
			// επομένως θα πρέπει να ακυρώσουμε και το πρώτο, δηλαδή θα
			// πρέπει να αποσύρουμε τα σχετικά cookies και να διαγράψουμε
			// την συνεδρία.
			Client.ajax('misc/exodos', function() {
				Isodos.submitting = false;
				Isodos.submitAllow();
				Isodos.focus();
			});
		});
	});
	return false;
}

Isodos.lathosPedio = function(fld, msg) {
	if (msg) Client.fyi.spano(msg);
	else Client.sound.error();
	fld.focus();
	return false;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Isodos.sousami = {};

Isodos.sousami.setup = function() {
	$('#sousamiOnOff').on('click', function(e) {
		var x = $('#sousami');
		if (x.length <= 0) return;

		x.find('.pinezaPineza').remove();
		if (x.css('display') == 'none') {
			x.fadeIn(200);
			return;
		}

		x.stop();
		if (x.css('opacity') < 1) x.fadeTo(200, 1);
		else x.fadeOut(200);
	});
	$('#sousami').siromeno({
		display: 'inline',
		top: '20px',
		left: '400px',
		whiteSpace: 'normal',
	}).pineza(4000).find('a').siromeno(false);
}

Isodos.sousami.mail = function(e) {
	Client.stopProp(e);
	var sub = 'Πρεφαδόρος -- Αίτηση νέου κωδικού';
	var bod = 'Παρακαλώ να μου αποστείλετε νέο κωδικό στο email που έχω δηλώσει ' +
		'στον «Πρεφαδόρο».\r\n\r\nLogin: ';
	bod += $('input[name="login"]').val().trim();
	bod += '\r\n\r\nEmail: \r\n\r\nΤηλέφωνο: \r\n';
	window.open('mailto:support' + '@' + 'prefadoros.net?subject=' + sub.uri() + '&body=' + bod.uri(), 'email');
	return false;
}

Isodos.submitAllow = function(nai) {
	if (nai === undefined) nai = true;
	Isodos.submitting = !nai;
	if (nai) $('input[type="submit"]').removeAttr('disabled');
	else $('input[type="submit"]').attr({disabled: 'disabled'});
}

$(document).ready(function() {
	Isodos.oku.setup();
	Isodos.sousami.setup();
	Isodos.focus();
});
